﻿namespace RG.Common
{
    public abstract class BcType
    {
        /// <summary>
        /// Управляющий код
        /// </summary>
        public const int Special = 101;

        #region Коды из генератора GEN_S_TREE БД MR3 (+документы)

        public const int Worker = 102;

        /// <summary>
        /// Наряд на распил (документ 519)
        /// </summary>
        public const int OrderToWork = 103;

        public const int Role = 104;

        /// <summary>
        /// Место ШК-склада
        /// </summary>
        public const int Place = 105;

        /// <summary>
        /// машина (док-т 565)
        /// </summary>
        public const int Car = 106;

        /// <summary>
        /// паллет (док-т 588)
        /// </summary>
        public const int SinglePallet = 107;

        /// <summary>
        /// поручение кладовщику (док-т 509)
        /// </summary>
        public const int StoreOrder = 108;

        /// <summary>
        /// Бригада сборки (узел в виртуальном дереве роли "сборка")
        /// </summary>
        public const int BuildTeam = 109;

        /// <summary>
        /// Код заказа
        /// </summary>
        public const int Order = 110;

        /// <summary>
        /// Штрих-код - описание стандартных габаритов или веса
        /// </summary>
        public const int Dimension = 111;

        /// <summary>
        /// Линия сборки (из справочника производственных единиц)
        /// </summary>
        public const int BuildConveyor = 112;

        /// <summary>
        /// ШК-склад
        /// </summary>
        public const int BarcodeStore = 113;

        /// <summary>
        /// Группа ШК сопровождения (документ 370)
        /// </summary>
        //public const int SatelliteDoc = 114;

        /// <summary>
        /// Объединенное поручение кладовщику (документ 354)
        /// </summary>
        public const int UnitedStoreDoc = 115;

        /// <summary>
        /// Маршрутный лист
        /// </summary>
        public const int RouteSheet = 116;

        /// <summary>
        /// Телега (перемещаемое место)
        /// Это значение для внутренних операций в программе. На бумаге печатается Place, чтобы унифицировать справочник мест и справочник телег
        /// </summary>
        public const int Trolley = 117;

        /// <summary>
        /// Тип дефекта (быстрый ввод сканером)
        /// </summary>
        public const int BreakType = 118;

        #endregion

        #region Коды из генератора GEN_L_ITEMS БД MR3

        /// <summary>
        /// Итем наряда или производственный штрих-код (генератор MR3 L_ITEMS)
        /// Исторически - взаимозаменяемо с коротким ШК EAN-13
        /// </summary>
        public const int Item = 201;

        /// <summary>
        /// Производственный штрих-код MR3, скрытый внутри складского ШК
        /// На бумаге не печатается
        /// </summary>
        public const int HiddenBarcode = 202;

        /// <summary>
        /// ШК сопровождения
        /// </summary>
        //public const int SatBarcode = 221;

        #endregion

        /// <summary>
        /// Складской штрих-код
        /// </summary>
        public const int Sbc = 220;

        /// <summary>
        /// Штрих-код склада материалов
        /// </summary>
        public const int Abc = 250;

        /// <summary>
        /// Штрих-код для товаров на тележках
        /// </summary>
        public const int Tbc = 280;

        /// <summary>
        /// Отдали 1с-никам
        /// </summary>
        public const int Bc1c = 301;

        /// <summary>
        /// Вес в граммах
        /// </summary>
        public const int Weight = 555;
    }

    public enum bcType
    {
        /// <summary>
        /// Управляющий код
        /// </summary>
        Special = BcType.Special,

        Worker = BcType.Worker,
        OrderToWork = BcType.OrderToWork,
        Role = BcType.Role,
        Place = BcType.Place,

        /// <summary>
        /// машина (док-т 65)
        /// </summary>
        Car = BcType.Car,

        /// <summary>
        /// паллет (док-т 88)
        /// </summary>
        SinglePallet = BcType.SinglePallet,

        /// <summary>
        /// поручение кладовщику (док-т 9)
        /// </summary>
        StoreOrder = BcType.StoreOrder,

        /// <summary>
        /// Бригада сборки (узел в виртуальном дереве роли "сборка")
        /// </summary>
        BuildTeam = BcType.BuildTeam,

        /// <summary>
        /// Код заказа
        /// </summary>
        Order = BcType.Order,

        /// <summary>
        /// Штрих-код - описание стандартных габаритов или веса
        /// </summary>
        Dimension = BcType.Dimension,

        /// <summary>
        /// Линия сборки (из справочника производственных единиц)
        /// </summary>
        BuildConveyor = BcType.BuildConveyor,

        /// <summary>
        /// ШК-склад
        /// </summary>
        BarcodeStore = BcType.BarcodeStore,

        /// <summary>
        /// Маршрутный лист
        /// </summary>
        RouteSheet = BcType.RouteSheet,

        /// <summary>
        /// Телега (перемещаемое место).
        /// Это значение для внутренних операций в программе. На бумаге печатается Place, чтобы унифицировать справочник мест и справочник телег
        /// </summary>
        Trolley = BcType.Trolley,

        /// <summary>
        /// Тип дефекта (быстрый ввод сканером)
        /// </summary>
        BreakType = BcType.BreakType,

        /// <summary>
        /// Итем наряда или производственный штрих-код (генератор MR3 L_ITEMS)
        /// Исторически - взаимозаменяемо с коротким ШК EAN-13
        /// </summary>
        Item = BcType.Item,

        /// <summary>
        /// Производственный штрих-код MR3, скрытый внутри складского ШК
        /// На бумаге не печатается
        /// </summary>
        HiddenBarcode = BcType.HiddenBarcode,

        /// <summary>
        /// Складской штрих-код
        /// </summary>
        Sbc = BcType.Sbc,

        /// <summary>
        /// Штрих-код склада материалов
        /// </summary>
        Abc = BcType.Abc,

        /// <summary>
        /// Штрих-код для товаров на тележках
        /// </summary>
        Tbc = BcType.Tbc,

        /// <summary>
        /// Отдали 1с-никам
        /// </summary>
        Bc1c = BcType.Bc1c,

        /// <summary>
        /// Вес в граммах
        /// </summary>
        Weight = BcType.Weight
    }

    // Копия из MR3.Const - нельзя подключать весь MR3Const в PPC-приложение
    public abstract class MR3BarcodeType
    {
        /// <summary>
        /// Сборка
        /// </summary>
        public const int Build = 1;

        /// <summary>
        /// Фурнитура
        /// </summary>
        public const int Furn = 2;

        /// <summary>
        /// Некомплект
        /// </summary>
        public const int NC = 3;

        /// <summary>
        /// Распил/перемещение
        /// </summary>
        public const int Production = 4;

        /// <summary>
        /// Рекламация
        /// </summary>
        public const int Reclamation = 5;
    }

    /// <summary>
    /// Идентификатор объекта: паллет, mr3-ШК, или С-ШК
    /// </summary>
    public class BarcodeIdDTO
    {
        public int BC_Prefix { get; set; }
        public int BarcodeId { get; set; }
    }
}